package com.tensquare.user.service;

import com.tensquare.entity.Result;
import com.tensquare.user.dto.ReqRole;
import com.tensquare.user.pojo.TbRole;
import com.tensquare.user.vo.Role;
import com.tensquare.user.vo.RoleVO;
import com.tensquare.user.vo.UserInfoResponse;
import com.tensquare.user.vo.UserVO;
import jdk.nashorn.internal.runtime.arrays.ArrayLikeIterator;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

public interface TbRoleService {

    void addRole(ReqRole reqRole);

    void delRole(ArrayList<Integer> ids);

    void updateRole(Integer roleId,ArrayList<Integer> permissionIds,Map<String,Object> columnData);

    RoleVO findByPage(int offset, int limit, String roleName, String roleCode, String roleStatus, Date beginCreateDate,Date endCreateDate);

    Role findOne(Integer id);

    /**
     * 修改角色状态
     * @param disable 状态
     * @param roleId 角色Id
     */
    void changeDisable(String disable,Integer roleId);

    /**
     * 批量查询角色信息
     * @param roleIds 角色Id的集合
     */
    List<Role> findBatchByRoleIds(ArrayList<Integer> roleIds);

    /**
     * 查询数据库所有的列名
     */
    List<String> findColumnName();

    /**
     *  赋予用户角色
     * @param roleIds 角色Id集合
     * @param userId 用户Id
     */
    void updateRoleToUser(ArrayList<Integer> roleIds,String userId);

    /**
     * 查询拥有该角色的用户
     * @param roleId 角色Id
     */
    UserVO findUserByRole(Integer roleId,Integer pageNum,Integer pageSize,String nickname,String mobile);

    /**
     * 删除该用户的角色
     * @param userIds 用户Id集合
     * @param roleId 角色Id
     */
    void delUserRoleByUserIds(Integer roleId,ArrayList<String> userIds);

    /**
     * 查询不拥有该角色的用户
     * @param roleId
     * @return
     */
    UserVO findUserNotInRole(Integer roleId,Integer pageNum,Integer pageSize,String nickName,String mobile);

    /**
     * 给用户添加角色
     * @param roleId 角色Id
     * @param userIds 用户Id集合
     */
    void addRoleToUser(Integer roleId,ArrayList<String> userIds);
}
